home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 23 / Amiga Format AFCD23 (Feb 1998, Issue 107).iso / +look_here_1st!+ / reader_requests / alienbreed3d2 / cheesesauce / controlloop.s < prev    next >
Text File  |  1997-11-28  |  55KB  |  2,788 lines

  1. ; Main control loop.
  2. ; This is the very outer loop of the program.
  3.  
  4. ; What needs to be done and when?
  5.  
  6. ; Black screen start.
  7. ; Load title music
  8. ; Load title screen
  9. ; Fade up title screen
  10. ; Select options
  11. ; Play game.
  12.  
  13. ; Playing the game involves allocating screen and
  14. ; level memory, loading the level, loading the
  15. ; samples, loading the wall graphics, playing the
  16. ; level, deallocating the screen memory....
  17.  
  18. ; Control part should therefore:
  19.  
  20. ; 1. Load Title Music
  21. ; 2. Load title screen
  22. ; 3. Fade up title screen.
  23. ; 4. Add 'loading' message
  24. ; 5. Load samples and walls
  25. ; 6: LOOP START
  26. ; 7. Option select screens
  27. ; 8. Free music mem, allocate level mem.
  28. ; 9. Load level
  29. ;10. Play level with options selected
  30. ;11. Reload title music
  31. ;12. Reload title screen
  32. ;13. goto 6
  33.  
  34. INTROTUNEADDR: dc.l 0
  35. INTROTUNENAME: dc.b 'ab3:sounds/abreed3d.med',0
  36.  even
  37. TITLESCRNADDR: dc.l 0
  38. TITLESCRNNAME: dc.b 'TKG1:includes/titlescrnraw1',0
  39.  even
  40. TITLESCRNNAME2: dc.b 'TKG2:includes/titlescrnraw1',0
  41.  even
  42. OPTSPRADDR: dc.l 0
  43. TITLESCRNPTR: dc.l 0
  44.  
  45.  
  46. ProtValA: dc.l 0
  47. ProtValB: dc.l 0
  48. ProtValC: dc.l 0
  49. ProtValD: dc.l 0
  50. ProtValE: dc.l 0
  51. ProtValF: dc.l 0
  52. ProtValG: dc.l 0
  53. ProtValH: dc.l 0
  54. ProtValI: dc.l 0
  55. ProtValJ: dc.l 0
  56. ProtValK: dc.l 0
  57. ProtValL: dc.l 0
  58. ProtValM: dc.l 0
  59. ProtValN: dc.l 0
  60.  
  61. MASTERPLAYERONEHEALTH:
  62.   dc.w 0
  63.   dc.w 0
  64. MASTERPLAYERONEAMMO:
  65.  ds.w 20
  66.  
  67. MASTERPLAYERONESHIELD:
  68.  dc.w 0
  69.  dc.w 0
  70. MASTERPLAYERONEGUNS:
  71.  dcb.w 10,0
  72.  
  73. MASTERPLAYERTWOHEALTH:
  74.   dc.w 0
  75.   dc.w 0
  76. MASTERPLAYERTWOAMMO:
  77.  ds.w 20
  78.  
  79. MASTERPLAYERTWOSHIELD:
  80.  dc.w 0
  81.  dc.w 0
  82. MASTERPLAYERTWOGUNS:
  83.  dcb.w 10,0
  84.  
  85. KVALTOASC:
  86.         Dc.b    " `  "," 1  "," 2  "," 3  "
  87.         dc.b    " 4  "," 5  "," 6  "," 7  "
  88.         dc.b    " 8  "," 9  "
  89. ; 10
  90.         Dc.b    " 0  "," -  "," +  "," \  "
  91.         dc.b     '    ','    '," Q  "," W  "
  92.         dc.b    " E  "," R  "
  93. ; 20
  94.         Dc.b    " T  "," Y  "," U  "," I  "
  95.         dc.b    " O  "," P  "," [  "," ]  "
  96.         dc.b    '    ','KP1 '
  97. ; 30
  98.         Dc.b    'KP2 ','KP3 '," A  "," S  "
  99.         dc.b    " D  "," F  "," G  "," H  "
  100.         dc.b    " J  "," K  "
  101. ;40
  102.         Dc.b    " L  "," ;  "," #  ",'    '
  103.         dc.b    '    ','KP4 ','KP5 ','KP6 '
  104.         dc.b    '    '," Z  "
  105. ;50
  106.         Dc.b    " X  "," C  "," V  "," B  "
  107.         dc.b    " N  "," M  "," ,  "," .  "
  108.         dc.b     " /  ",'    '
  109. ;60
  110.         Dc.b    '    ','KP7 ','KP8 ','KP9 '
  111.         dc.b    'SPC ','<-- ','TAB ','ENT '
  112.         dc.b    'RTN ','ESC '
  113. ;70
  114.         Dc.b    'DEL ','    ','    ','    '
  115.         dc.b    'KP- ','    ','UCK ','DCK '
  116.         dc.b    'RCK ','LCK '
  117. ;80
  118.         Dc.b    'FK1 ','FK2 ','FK3 ','FK4 '
  119.         dc.b    'FK5 ','FK6 ','FK7 ','FK8 '
  120.         dc.b    'FK9 ','FK0 '
  121. ;90
  122.         Dc.b    'KP( ','KP) ','KP/ ','KP* '
  123.         dc.b    'KP+ ','HLP ','LSH ','RSH '
  124.         dc.b    'CPL ','CTL '
  125. ;100
  126.         Dc.b    'LAL ','RAL ','LAM ','RAM '
  127.         dc.b    '    ','    ','    ','    '
  128.         dc.b    '    ','    '
  129.         Dc.b    '    ','    ','    ','    '
  130.         dc.b    '    ','    ','    ','    '
  131.         dc.b    '    ','    '
  132.  
  133.  even
  134.  
  135. FINISHEDLEVEL: dc.w 0
  136.  
  137. _IntuitionBase: dc.l 0
  138. _GfxBase: dc.l 0
  139. MyScreen: dc.l 0
  140.  
  141. MyNewScreen    dc.w    0,0        left, top
  142.         dc.w    320,16        width, height
  143.         dc.w    1        depth
  144.         dc.b    0,1        pens
  145.         dc.w    0        viewmodes
  146.         dc.w    CUSTOMSCREEN+SCREENQUIET    type
  147.         dc.l    0        font
  148.         dc.l    0    title
  149.         dc.l    0        gadgets
  150.         dc.l    0        bitmap
  151.  
  152.  
  153. INTUITION_REV    equ    31        v1.1
  154. int_name    INTNAME
  155.  even
  156.  
  157. START:
  158.  
  159.  move.b #'n',mors  
  160.  
  161. ************************************88
  162. * TAKE OUT WHEN PLAYING MODULE AGAIN
  163. ********************************
  164. ProtChkBLev1:
  165.     PRSDF
  166.     PRSDE
  167. ************************************
  168.  
  169. ; move.l #PROTCALLENC,a0
  170. ; move.l #(ENDPROT-PROTCALLENC)/4-1,d1
  171. ; move.l #$75055345,d0
  172. ;codeitup:
  173. ; sub.l d0,(a0)+
  174. ; ror.l #1,d0
  175. ; dbra d1,codeitup
  176. ; rts
  177.  
  178. ProtChkCLev1:
  179.  PRSDA
  180.  
  181.  move.w #$7201,titleplanes
  182.  
  183.  move.l 4.w,a6
  184.  move.l #doslibname,a1
  185.  moveq #0,d0
  186.  jsr -552(a6)
  187.  move.l d0,doslib
  188.  
  189.     moveq    #INTUITION_REV,d0    version
  190.     lea    int_name(pc),a1
  191.     CALLEXEC OpenLibrary
  192.     tst.l    d0
  193. ;    beq    exit_false        if failed then quit
  194.     move.l    d0,_IntuitionBase    else save the pointer
  195.  
  196.     lea    MyNewScreen(pc),a0
  197.     
  198.     CALLINT    OpenScreen        open a screen
  199.     tst.l    d0
  200. ;    beq    exit_closeall        if failed the close both, exit
  201.     move.l    d0,MyScreen
  202.  
  203.     CALLINT RethinkDisplay
  204.  
  205.  move.l #LINKname,a0
  206.  jsr LOADAFILE
  207.  move.l d0,LINKFILE
  208.  
  209.  
  210. ; move.l doslib,a6
  211. ; move.l #LINKname,d1
  212. ; move.l #1005,d2
  213. ; jsr -30(a6)
  214. ; move.l d0,LLhandle
  215. ;
  216. ; move.l doslib,a6
  217. ; move.l d0,d1
  218. ; move.l #LINKSPACE,d2
  219. ; move.l #90000,d3
  220. ; jsr -42(a6)
  221. ;
  222. ; move.l doslib,a6
  223. ; move.l LLhandle,d1
  224. ; jsr -36(a6)
  225.  
  226.  
  227.  PRSDS
  228.  jsr stuff
  229.  
  230.  jsr _InitLowLevel
  231.  
  232. ; jsr CLEARTITLEPAL
  233.  
  234. ProtChkDLev1:
  235.  PRSDT
  236.  
  237.  move.w #$20,$dff1dc
  238.  move.l #titlecop,$dff080
  239.  PRSDV
  240.  move.w #$87c0,$dff000+dmacon
  241.  move.w #$8020,$dff000+dmacon
  242. ProtChkMLev1:
  243.  move.w $dff006,d0
  244.  lea RVAL2-100(pc),a0
  245.  add.w d0,100(a0)
  246.  
  247.  bsr GETTITLEMEM
  248. ProtChkELev1:
  249.  PRSDU
  250.  bsr CLROPTSCRN
  251.  
  252.  bsr SETUPTITLESCRN
  253.  
  254. ; jsr _InitPlayer
  255.  
  256. ; move.l #INTROTUNENAME,a0
  257. ; jsr _LoadModule
  258. ; move.l d0,INTROTUNEADDR
  259.  PRSDY
  260. ; move.l d0,a0
  261. ; jsr _InitModule
  262.  
  263. ; move.l INTROTUNEADDR,a0
  264. ; jsr _PlayModule
  265. ProtChkFLev1:
  266.  PRSDa
  267.  move.l #TITLESCRNNAME,TITLESCRNPTR
  268.  bsr LOADTITLESCRN2
  269.  
  270.  FLASHER $0f0,$fff
  271.  
  272. **********************************************
  273.  jsr INITQUEUE
  274. **********************************************
  275.  
  276.  move.w #0,FADEVAL
  277.  move.w #31,FADEAMOUNT
  278.  bsr FADEUPTITLE
  279.  PRSDB
  280.  jsr LOADWALLS
  281.  jsr LOADFLOOR
  282.  jsr LOADOBS
  283.  PRSDZ
  284.  
  285. ; IFNE CD32VER
  286.  PRSDD
  287. ; ENDC
  288.  
  289.  jsr LOAD_SFX
  290. ; jsr _StopPlayer
  291.  PRSDW
  292.  PRSDX
  293. ; jsr _RemPlayer
  294.  
  295.  
  296. ***********************************************
  297.  jsr FLUSHQUEUE
  298. ***********************************************
  299.  
  300.  jsr PATCHSFX
  301.  
  302.  move.w #15,FADEAMOUNT
  303.  bsr FADEDOWNTITLE 
  304.  
  305.  bsr ASKFORDISK
  306.  
  307.  IFNE CD32VER
  308.  move.l doslib,a6
  309.  move.l #115,d1
  310.  jsr -198(a6)
  311.  ENDC
  312.  
  313. ; move.l #newblag,$80
  314. ; trap #0
  315. ; bra JUMPPASTIT
  316. ; rts
  317. ;
  318. ;newblag:
  319.  
  320.  
  321. ProtChkGLev1:
  322. ; bsr PROTSETUP
  323.  bsr DEFAULTGAME
  324.  
  325. ; move.l INTROTUNEADDR,a0
  326. ; jsr _UnLoadModule
  327.  
  328. ; IFEQ CD32VER
  329. ; jsr KInt_Init
  330. ; ENDC
  331. ProtChkHLev1:
  332. ; rte
  333. ;
  334. ;JUMPPASTIT:
  335.  
  336. BACKTOMENU:
  337.  
  338.  jsr CLEARKEYBOARD
  339.  
  340.  cmp.b #'s',mors
  341.  beq.s BACKTOSLAVE
  342.  cmp.b #'m',mors
  343.  beq.s BACKTOMASTER
  344.  bsr READMAINMENU
  345.  bra DONEMENU
  346. BACKTOMASTER:
  347.  bsr MASTERMENU
  348.  bra DONEMENU
  349. BACKTOSLAVE:
  350.  bsr SLAVEMENU
  351. DONEMENU:
  352.  
  353.  
  354.  bsr WAITREL
  355.  
  356. ; IFEQ CD32VER
  357. ; move.l OLDKINT,$68.w
  358. ; ENDC
  359.  
  360.  
  361.  
  362.  
  363.  bsr CLRSPRITES
  364.  
  365.  move.w #15,FADEAMOUNT
  366.  bsr FADEUPTITLE
  367.  move.w #31,FADEAMOUNT
  368.  bsr FADEDOWNTITLE
  369.  
  370.  move.w #$0201,titleplanes
  371.  
  372.     FILTER
  373.     
  374.  tst.b SHOULDQUIT
  375.  bne QUITTT
  376.  
  377.  bsr RELEASETITLEMEM
  378.  
  379.   
  380. ; jsr LOADBOTPIC
  381.  
  382.   
  383.  clr.b FINISHEDLEVEL
  384.  
  385.  move.w #0,PLR1s_angpos
  386.  move.w #0,PLR2s_angpos
  387.  move.w #0,PLR1_angpos
  388.  move.w #0,PLR2_angpos
  389.  move.b #0,PLR1_GunSelected
  390.  move.b #0,PLR2_GunSelected
  391.  
  392. **************************8
  393.  clr.b NASTY
  394. *************************** 
  395.  
  396.  move.l #MASTERPLAYERONEHEALTH,a0
  397.  move.l #MASTERPLAYERONESHIELD,a1
  398.  move.l #PLAYERONEHEALTH,a2
  399.  move.l #PLAYERONESHIELD,a3
  400.  move.l #PLAYERTWOHEALTH,a4
  401.  move.l #PLAYERTWOSHIELD,a5
  402.  
  403.  REPT 11 
  404.  move.l (a0),(a2)+
  405.  move.l (a0)+,(a4)+
  406.  ENDR
  407.  
  408.  REPT 6 
  409.  move.l (a1),(a3)+
  410.  move.l (a1)+,(a5)+
  411.  ENDR
  412.  
  413. *************************************
  414. ; jsr INITQUEUE
  415.  
  416. ; move.l #MEMF_CHIP,TYPEOFMEM
  417. ; move.l #bordername,a0
  418. ; move.l #scrn,d0
  419. ; move.l #0,d1
  420. ; jsr QUEUEFILE
  421.  
  422. ; ifeq CHEESEY
  423. ; move.l #bordername,a0
  424. ; move.l #scrn2,d0
  425. ; move.l #0,d1
  426. ; jsr QUEUEFILE
  427. ; endc 
  428.  
  429. ; jsr FLUSHQUEUE
  430.  
  431. ; ifne CHEESEY
  432. ; move.l scrn,scrn2
  433. ; endc
  434.  
  435. ************************************* 
  436.  
  437.     jsr PLAYTHEGAME
  438.     
  439. *************************************
  440. ; move.l scrn,a1
  441. ; move.l #10240*8,d0
  442. ; move.l 4.w,a6
  443. ; jsr -210(a6)
  444. ; ifeq CHEESEY
  445. ; move.l scrn2,a1
  446. ; move.l #10240*8,d0
  447. ; move.l 4.w,a6
  448. ; jsr -210(a6)
  449. ; endc
  450. *************************************
  451.  
  452. ; bsr FREEBOTMEM 
  453.  
  454. ; bra QUITTT
  455.  
  456.  tst.b FINISHEDLEVEL
  457.  beq dontusestats
  458.  
  459.  move.l #MASTERPLAYERONEHEALTH,a0
  460.  move.l #MASTERPLAYERONESHIELD,a1
  461.  move.l #PLAYERONEHEALTH,a2
  462.  move.l #PLAYERONESHIELD,a3
  463.  
  464.  REPT 11 
  465.  move.l (a2)+,(a0)+
  466.  ENDR
  467.  
  468.  REPT 6 
  469.  move.l (a3)+,(a1)+
  470.  ENDR
  471.  
  472. dontusestats:
  473.  
  474. ; bsr PASSLINETOGAME
  475. ; bsr GETSTATS
  476.  
  477.  bsr GETTITLEMEM
  478.  bsr CLROPTSCRN
  479.  bsr SETUPTITLESCRN
  480.  
  481.  move.l #TITLESCRNNAME2,TITLESCRNPTR
  482.  bsr LOADTITLESCRN2
  483.  move.w #$7201,titleplanes
  484.  
  485.  move.w #$20,$dff1dc
  486.  move.l #titlecop,$dff080
  487.  move.w #$87c0,$dff000+dmacon
  488.  move.w #$8020,$dff000+dmacon 
  489.  
  490.  move.w #0,FADEVAL
  491.  move.w #31,FADEAMOUNT
  492.  bsr FADEUPTITLE
  493.  
  494.  move.w #15,FADEAMOUNT
  495.  bsr FADEDOWNTITLE 
  496.  
  497. ; IFEQ CD32VER
  498. ; jsr KInt_Init
  499. ; ENDC
  500.  
  501.  bra BACKTOMENU
  502.  
  503. QUITTT:
  504.  
  505.  move.l LEVELDATA,d1
  506.  move.l d1,a1
  507.  move.l #120000,d0
  508.  move.l 4.w,a6
  509.  jsr -210(a6)
  510.  
  511.  move.l TEXTSCRN,d1
  512.  move.l d1,a1
  513.  move.l #10240*2,d0
  514.  move.l 4.w,a6
  515.  jsr -210(a6)
  516.  
  517.  move.l FASTBUFFER,d1    
  518.  move.l #2*320*256,d0
  519.  move.l 4.w,a6
  520.  jsr -210(a6)
  521.  
  522. ; jsr RELEASEWALLMEM
  523.  jsr RELEASESAMPMEM
  524.  jsr RELEASEFLOORMEM
  525.  jsr RELEASEOBJMEM
  526.   
  527.  move.l old,$dff080
  528.  move.l 4.w,a6
  529.  lea VBLANKInt,a1
  530.  moveq #INTB_COPER,d0
  531.  jsr _LVORemIntServer(a6)
  532.  
  533.  move.l 4.w,a6
  534.  lea KEYInt,a1
  535.  moveq #INTB_PORTS,d0
  536.  jsr _LVORemIntServer(a6)
  537.  
  538.  move.w #$f8e,$dff1dc
  539.  
  540.  move.l old,$dff080
  541.  move.w _storeint,d0
  542.  or.w d0,$dff000+intena
  543.  
  544. ; move.l    4.w,a6
  545. ; jsr    _LVOPermit(a6)
  546.  
  547.  
  548.  move.l #0,d0
  549.  
  550.  rts
  551.  
  552. SSTACK: dc.l 0
  553.  
  554. bordername: dc.b "TKG2:includes/newborderRAW",0
  555.  even
  556.  
  557. ; KEY OPTIONS:
  558. CONTROLBUFFER:
  559. turn_left_key:
  560.  dc.b $4f
  561. turn_right_key:
  562.  dc.b $4e
  563. forward_key:
  564.  dc.b $4c
  565. backward_key:
  566.  dc.b $4d
  567. fire_key:
  568.  dc.b $65
  569. operate_key:
  570.  dc.b $40
  571. run_key:
  572.  dc.b $61
  573. force_sidestep_key:
  574.  dc.b $67
  575. sidestep_left_key:
  576.  dc.b $39
  577. sidestep_right_key:
  578.  dc.b $3a
  579. duck_key:
  580.  dc.b $22
  581. look_behind_key:
  582.  dc.b $28
  583. jump_key:
  584.  dc.b $f
  585. look_up_key:
  586.  dc.b 27
  587. look_down_key:
  588.  dc.b 42
  589.  
  590.  
  591. templeftkey: dc.b 0
  592. temprightkey: dc.b 0
  593. tempslkey: dc.b 0 
  594. tempsrkey: dc.b 0
  595.  
  596.  even 
  597.  
  598. GETSTATS:
  599. ; CHANGE PASSWORD INTO RAW DATA
  600.  
  601.  rts
  602.  
  603.  
  604. SETPLAYERS:
  605.  
  606.  move.w PLOPT,d0
  607.  add.b #'a',d0
  608.  move.b d0,LEVA
  609.  move.b d0,LEVB
  610.  move.b d0,LEVC
  611.  move.b d0,LEVD
  612.  move.b d0,LEVE
  613.  
  614.  cmp.b #'s',mors
  615.  beq SLAVESETUP
  616.  cmp.b #'m',mors
  617.  beq MASTERSETUP
  618.  st NASTY
  619. onepla:
  620.  rts
  621.  
  622. NASTY: dc.w 0
  623.  
  624. MASTERSETUP:
  625.  clr.b NASTY
  626.  move.w PLOPT,d0
  627.  jsr SENDFIRST
  628.  
  629.  move.w Rand1,d0
  630.  jsr SENDFIRST
  631.  
  632.  bsr TWOPLAYER
  633.  rts
  634.  
  635. SLAVESETUP:
  636.  CLR.B NASTY
  637.  jsr RECFIRST
  638.  move.w d0,PLOPT
  639.  add.b #'a',d0
  640.  move.b d0,LEVA
  641.  move.b d0,LEVB
  642.  move.b d0,LEVC
  643.  move.b d0,LEVD
  644.  move.b d0,LEVE
  645.  
  646.  jsr RECFIRST
  647.  move.w d0,Rand1
  648.  bsr TWOPLAYER
  649.  
  650.  
  651.  rts
  652.      
  653. ********************************************************
  654.  
  655. ASKFORDISK:
  656.  lea RVAL1+300(pc),a0
  657.  lea RVAL2+900(pc),a1
  658.  PRSDD
  659.  move.w #10,OptScrn
  660.  bsr DRAWOPTSCRN
  661.  
  662. ProtChkNLev1:
  663. .wtrel:
  664.  btst #7,$bfe001
  665.  beq.s .wtrel
  666.  
  667. wtclick:
  668.  add.w #$235,-300(a0)
  669.  add.w #$4533,-900(a0)
  670.  btst #6,$bfe001
  671.  bne.s wtclick
  672.  
  673.  rts
  674.  
  675. CLRSPRITES: 
  676.  move.l #nullspr,d0
  677.  move.w d0,tsp0l
  678.  move.w d0,tsp1l
  679.  move.w d0,tsp2l
  680.  move.w d0,tsp3l
  681.  move.w d0,tsp4l
  682.  move.w d0,tsp5l
  683.  move.w d0,tsp6l
  684.  move.w d0,tsp7l
  685.  swap d0
  686.  move.w d0,tsp0h
  687.  move.w d0,tsp1h
  688.  move.w d0,tsp2h
  689.  move.w d0,tsp3h
  690.  move.w d0,tsp4h
  691.  move.w d0,tsp5h
  692.  move.w d0,tsp6h
  693.  move.w d0,tsp7h 
  694.  rts
  695.  
  696. ********************************************************
  697.  
  698. READMAINMENU:
  699.  
  700.  
  701.  move.b #'n',mors
  702.  
  703.  move.w MAXLEVEL,d0
  704.  
  705.  move.l #CURRENTLEVELLINE,a1
  706.  muls #40,d0
  707.  move.l LINKFILE,a0
  708.  add.l #LevelName,a0
  709.  add.l d0,a0
  710.  bsr PUTINLINE
  711.  
  712. ; Stay here until 'play game' is selected.
  713.  
  714.  move.w #0,OptScrn
  715.  bsr DRAWOPTSCRN
  716.  move.w #0,OPTNUM
  717.  
  718.  bsr HIGHLIGHT
  719.  
  720.  
  721.  
  722.  bsr WAITREL
  723. .rdlop:
  724.  
  725.  bsr CHECKMENU
  726.  tst.w d0
  727.  blt.s .rdlop
  728.  
  729.  
  730. ; tst.w d0
  731. ; bne.s .nonextlev
  732. ; move.w LEVELSELECTED,d0
  733. ; add.w #1,d0
  734. ; cmp.w MAXLEVEL,d0
  735. ; blt .nowrap
  736. ; moveq #0,d0
  737. ;.nowrap:
  738. ; and.w #$f,d0
  739. ; move.w d0,LEVELSELECTED
  740. ; move.l #CURRENTLEVELLINE,a1
  741. ; muls #40,d0
  742. ; move.l #LEVEL_OPTS,a0
  743. ; add.l d0,a0
  744. ; bsr PUTINLINE
  745. ; bsr JUSTDRAWIT
  746. ; bra .rdlop
  747.  
  748. .nonextlev:
  749.  
  750.  cmp.w #1,d0
  751.  bne .noopt
  752.  
  753.  bra MASTERMENU
  754.  
  755. .noopt:
  756.  
  757. ; cmp.w #5,d0
  758. ; bne.s .noqui
  759. ; st SHOULDQUIT
  760. ; bra playgame
  761. ;.noqui
  762.  
  763.  cmp.w #2,d0
  764.  beq playgame
  765.  
  766.  cmp.w #3,d0
  767.  bne .nocontrol
  768.  
  769.  bsr CHANGECONTROLS
  770.  
  771.  move.w #0,OptScrn
  772.  bsr DRAWOPTSCRN
  773.  move.w #0,OPTNUM
  774.  
  775.  bsr HIGHLIGHT
  776.  
  777.  bsr WAITREL
  778.  bra .rdlop
  779.  
  780. .nocontrol:
  781.  
  782.  cmp.w #4,d0
  783.  bne .nocred
  784.  bsr SHOWCREDITS
  785.  move.w #0,OptScrn
  786.  bsr DRAWOPTSCRN
  787.  move.w #1,OPTNUM
  788.  
  789.  bsr HIGHLIGHT
  790.  
  791.  bsr WAITREL
  792.  bra .rdlop
  793.  
  794. .nocred:
  795.  
  796.  cmp.w #5,d0
  797.  bne .noload
  798.  
  799.  bsr WAITREL
  800.  
  801.  jsr LOADPOSITION
  802.  
  803.  move.w #0,OptScrn
  804.  bsr DRAWOPTSCRN
  805.  move.w #1,OPTNUM
  806.  
  807.  bsr HIGHLIGHT
  808.  
  809.  bsr WAITREL
  810.  bra .rdlop
  811.  
  812. .noload:
  813.  cmp.w #6,d0
  814.  bne playgame
  815.  bsr WAITREL
  816.  
  817.  jsr SAVEPOSITION
  818.  
  819.  move.w #0,OptScrn
  820.  bsr DRAWOPTSCRN
  821.  move.w #1,OPTNUM
  822.  
  823.  bsr HIGHLIGHT
  824.  
  825.  bsr WAITREL
  826.  bra .rdlop
  827.  
  828.  
  829. ;
  830. ; move.l #PASSWORDLINE+12,a0
  831. ; moveq #15,d2
  832. ;.clrline:
  833. ; move.b #32,(a0)+
  834. ; dbra d2,.clrline 
  835. ; move.w #0,OptScrn
  836. ; bsr DRAWOPTSCRN
  837. ;
  838. ; IFEQ CD32VER
  839. ; clr.b lastpressed
  840. ; move.l #PASSWORDLINE+12,a0
  841. ; move.w #0,d1
  842. ;.ENTERPASS:
  843. ; tst.b lastpressed
  844. ; beq .ENTERPASS
  845. ; move.b lastpressed,d2
  846. ; move.b #0,lastpressed
  847. ; move.l #KVALTOASC,a1
  848. ; cmp.l #'<-- ',(a1,d2.w*4)
  849. ; bne .nodel
  850. ;
  851. ; tst.b d1
  852. ; beq .nodel
  853. ;
  854. ; subq #1,d1
  855. ; move.b #32,-(a0)
  856. ; movem.l d0-d7/a0-a6,-(a7)
  857. ; bsr JUSTDRAWIT
  858. ; movem.l (a7)+,d0-d7/a0-a6
  859. ; bra .ENTERPASS
  860. ;
  861. ;.nodel:
  862. ; cmp.l #'RTN ',(a1,d2.w*4)
  863. ; beq .FORGETIT
  864. ; cmp.l #'ESC ',(a1,d2.w*4)
  865. ; beq .FORGETIT
  866. ; move.b 1(a1,d2.w*4),d2
  867. ; cmp.b #65,d2
  868. ; blt .ENTERPASS
  869. ; cmp.b #'Z',d2
  870. ; bgt .ENTERPASS
  871. ; move.b d2,(a0)+
  872. ; move.w #0,OptScrn
  873. ; movem.l d0-d7/a0-a6,-(a7)
  874. ; bsr JUSTDRAWIT
  875. ; movem.l (a7)+,d0-d7/a0-a6
  876. ; add.w #1,d1
  877. ; cmp.w #16,d1
  878. ; blt .ENTERPASS
  879. ;
  880. ; ENDC
  881. ; IFNE CD32VER
  882. ; move.l #PASSWORDLINE+12,a0
  883. ; move.w #15,d0
  884. ;.ENTERPASS:
  885. ; bsr GETACHAR
  886. ; dbra d0,.ENTERPASS
  887. ; ENDC
  888. ;
  889. ; bsr PASSLINETOGAME
  890. ; tst.w d0
  891. ; bne .FORGETIT
  892. ; bsr GETSTATS
  893. ; move.w MAXLEVEL,d0
  894. ; move.l #CURRENTLEVELLINE,a1
  895. ; muls #40,d0
  896. ; move.l #LEVEL_OPTS,a0
  897. ; add.l d0,a0
  898. ; bsr PUTINLINE
  899. ;
  900. ;.FORGETIT:
  901. ; bsr WAITREL
  902. ; bsr CALCPASSWORD
  903. ;
  904. ; move.w #0,OptScrn
  905. ; bsr DRAWOPTSCRN
  906. ;
  907. ; move.w #1,OPTNUM
  908. ;
  909. ; bsr HIGHLIGHT
  910. ;
  911. ; bra .rdlop 
  912.  
  913. playgame:
  914.  move.w MAXLEVEL,PLOPT
  915.  rts
  916.  
  917. SHOULDQUIT: dc.w 0
  918.  
  919. LEVELSELECTED:
  920.  dc.w 0
  921.  
  922.  IFNE CD32VER
  923. GETACHAR:
  924.  moveq #0,d7
  925.  move.b #'A',(a0)
  926.  movem.l d0-d7/a0-a6,-(a7)
  927.  jsr JUSTDRAWIT
  928.  movem.l (a7)+,d0-d7/a0-a6
  929.  
  930. .wtnum:
  931.  btst #1,$dff00c
  932.  sne d1
  933.  btst #1,$dff00d
  934.  sne d2
  935.  btst #0,$dff00c
  936.  sne d3
  937.  btst #0,$dff00d
  938.  sne d4
  939.  
  940.  eor.b d1,d3
  941.  eor.b d2,d4
  942.  
  943.  tst.b d1
  944.  beq.s .NODELETE
  945.  cmp.w #15,d0
  946.  beq.s .NODELETE
  947.  move.b #32,(a0)
  948.  subq #1,a0
  949.  addq #1,d0
  950.  move.b (a0),d7
  951.  sub.b #'A',d7
  952.  movem.l d0-d7/a0-a6,-(a7)
  953.  jsr JUSTDRAWIT
  954.  movem.l (a7)+,d0-d7/a0-a6
  955.  jsr WAITFORNOPRESS
  956.  bra .wtnum
  957. .NODELETE
  958.  
  959.  tst.b d4
  960.  bne.s .PREVNUM
  961.  tst.b d3
  962.  bne.s .NEXTNUM
  963.  btst #7,$bfe001
  964.  bne.s .wtnum
  965.  addq #1,a0
  966.  jsr WAITFORNOPRESS
  967.  rts
  968.  
  969. .PREVNUM:
  970.  subq #1,d7
  971.  bge.s .nonegg
  972.  moveq #15,d7
  973. .nonegg:
  974.  move.b d7,d1
  975.  add.b #'A',d1
  976.  move.b d1,(a0)
  977.  movem.l d0-d7/a0-a6,-(a7)
  978.  jsr JUSTDRAWIT
  979.  movem.l (a7)+,d0-d7/a0-a6
  980.  
  981.  jsr WAITFORNOPRESS
  982.  
  983.  bra .wtnum
  984.  
  985. .NEXTNUM:
  986.  addq #1,d7
  987.  cmp.w #15,d7
  988.  ble.s .nobigg
  989.  moveq #0,d7
  990. .nobigg:
  991.  move.b d7,d1
  992.  add.b #'A',d1
  993.  move.b d1,(a0)
  994.  movem.l d0-d7/a0-a6,-(a7)
  995.  jsr JUSTDRAWIT
  996.  movem.l (a7)+,d0-d7/a0-a6
  997.  jsr WAITFORNOPRESS
  998.  bra .wtnum
  999.  rts
  1000.  ENDC
  1001.  
  1002.  
  1003. MASTERMENU:
  1004.  
  1005.  move.b #'m',mors
  1006.  
  1007.  move.w #0,LEVELSELECTED
  1008.  
  1009.  move.w #0,d0 
  1010.  move.l #CURRENTLEVELLINEM,a1
  1011.  muls #40,d0
  1012.  move.l #LEVEL_OPTS,a0
  1013.  add.l d0,a0
  1014.  bsr PUTINLINE
  1015.  
  1016. ; Stay here until 'play game' is selected.
  1017.  
  1018.  move.w #4,OptScrn
  1019.  bsr DRAWOPTSCRN
  1020.  move.w #1,OPTNUM
  1021.  
  1022.  bsr HIGHLIGHT
  1023.  
  1024.  bsr WAITREL
  1025. .rdlop:
  1026.  bsr CHECKMENU
  1027.  tst.w d0
  1028.  blt.s .rdlop
  1029.  bsr WAITREL
  1030.  
  1031.  cmp.w #1,d0
  1032.  bne.s .nonextlev
  1033.  
  1034.  move.w LEVELSELECTED,d0
  1035.  add.w #1,d0
  1036.  cmp.w MAXLEVEL,d0
  1037.  blt .nowrap
  1038.  moveq #0,d0
  1039. .nowrap:
  1040. ; and.w #$f,d0
  1041.  move.w d0,LEVELSELECTED
  1042.  move.l #CURRENTLEVELLINEM,a1
  1043.  muls #40,d0
  1044.  move.l #LEVEL_OPTS,a0
  1045.  add.l d0,a0
  1046.  bsr PUTINLINE
  1047.  bsr JUSTDRAWIT
  1048.  bra .rdlop
  1049.  
  1050. .nonextlev:
  1051.  
  1052.  cmp.w #2,d0
  1053.  beq .playgame
  1054.  
  1055.  cmp.w #0,d0
  1056.  bne .noopt
  1057.  
  1058.  bra SLAVEMENU
  1059.  
  1060. .noopt:
  1061.  
  1062.  cmp.w #3,d0
  1063.  bne .nocontrol
  1064.  
  1065.  bsr CHANGECONTROLS
  1066.  
  1067.  move.w #4,OptScrn
  1068.  bsr DRAWOPTSCRN
  1069.  move.w #0,OPTNUM
  1070.  
  1071.  bsr HIGHLIGHT
  1072.  
  1073.  bsr WAITREL
  1074.  bra .rdlop
  1075.  
  1076. .nocontrol:
  1077.  
  1078. .playgame
  1079.  
  1080.  move.w LEVELSELECTED,PLOPT
  1081.  rts
  1082.  
  1083. SLAVEMENU:
  1084.  
  1085.  move.b #'s',mors
  1086.  
  1087. ; Stay here until 'play game' is selected.
  1088.  
  1089.  move.w #5,OptScrn
  1090.  bsr DRAWOPTSCRN
  1091.  move.w #1,OPTNUM
  1092.  
  1093.  bsr HIGHLIGHT
  1094.  
  1095.  bsr WAITREL
  1096. .rdlop:
  1097.  bsr CHECKMENU
  1098.  tst.w d0
  1099.  blt.s .rdlop
  1100.  bsr WAITREL
  1101.  
  1102.  cmp.w #1,d0
  1103.  beq .playgame
  1104.  
  1105.  cmp.w #0,d0
  1106.  bne .noopt
  1107.  
  1108.  bra READMAINMENU
  1109.  
  1110. .noopt:
  1111.  
  1112.  cmp.w #2,d0
  1113.  bne .nocontrol
  1114.  
  1115.  bsr CHANGECONTROLS
  1116.  
  1117.  move.w #0,OptScrn
  1118.  bsr DRAWOPTSCRN
  1119.  move.w #0,OPTNUM
  1120.  
  1121.  bsr HIGHLIGHT
  1122.  
  1123.  bsr WAITREL
  1124.  bra .rdlop
  1125.  
  1126. .nocontrol:
  1127. .playgame:
  1128.  
  1129.  rts
  1130.  
  1131. TWOPLAYER:
  1132.  
  1133.  move.w #200,PLAYERONEHEALTH
  1134.  move.w #200,PLAYERTWOHEALTH
  1135.  
  1136.  st.b PLAYERONEGUNS+1
  1137.  st.b PLAYERONEGUNS+3
  1138.  st.b PLAYERONEGUNS+5
  1139.  st.b PLAYERONEGUNS+7
  1140.  st.b PLAYERONEGUNS+9
  1141.  st.b PLAYERONEGUNS+11
  1142.  
  1143.  st.b PLAYERTWOGUNS+1
  1144.  st.b PLAYERTWOGUNS+3
  1145.  st.b PLAYERTWOGUNS+5
  1146.  st.b PLAYERTWOGUNS+7
  1147.  st.b PLAYERTWOGUNS+9
  1148.  st.b PLAYERTWOGUNS+11
  1149.  
  1150.  move.l #PLAYERONEAMMO,a0
  1151.  move.l #PLAYERTWOAMMO,a1
  1152.  move.w #9,d1
  1153. .putinvals
  1154.  jsr GetRand
  1155.  and.w #63,d0
  1156.  add.w #5,d0
  1157.  move.w d0,(a0)+
  1158.  move.w d0,(a1)+
  1159.  dbra d1,.putinvals
  1160.  
  1161.  rts
  1162.  
  1163.  move.w #0,OldEnergy
  1164.  move.w #127,Energy
  1165.  jsr EnergyBar
  1166.  
  1167.  move.w #63,OldAmmo
  1168.  move.w #0,Ammo
  1169.  jsr AmmoBar
  1170.  move.w #0,OldAmmo
  1171.  
  1172.  move.b #0,PLR1_GunSelected
  1173.  
  1174.  move.b #0,PLR2_GunSelected
  1175.  rts
  1176.  
  1177. newdum:
  1178.  rts
  1179.  
  1180. DEFAULTGAME:
  1181.  move.w #0,MAXLEVEL
  1182.  
  1183.  move.l #MASTERPLAYERONEHEALTH,a0
  1184.  move.l #MASTERPLAYERONESHIELD,a1
  1185.  move.l #0,(a0)+
  1186.  move.l #0,(a0)+
  1187.  move.l #0,(a0)+
  1188.  move.l #0,(a0)+
  1189.  move.l #0,(a0)+
  1190.  move.l #0,(a0)+
  1191.  move.l #0,(a0)+
  1192.  move.l #0,(a0)+
  1193.  move.l #0,(a0)+
  1194.  move.l #0,(a0)+
  1195.  move.l #0,(a0)+
  1196.  
  1197.  move.l #0,(a1)+
  1198.  move.l #0,(a1)+
  1199.  move.l #0,(a1)+
  1200.  move.l #0,(a1)+
  1201.  move.l #0,(a1)+
  1202.  move.l #0,(a1)+
  1203.  
  1204.  move.w #200,MASTERPLAYERONEHEALTH
  1205.  move.w #$ff,MASTERPLAYERONEGUNS
  1206.  
  1207.  move.l LINKFILE,a5
  1208.  add.l #GunBulletTypes,a5
  1209.  move.w (a5),d0
  1210.  
  1211.  move.l #MASTERPLAYERONEAMMO,a5
  1212.  move.w #20,(a5,d0.w*2)
  1213.  
  1214.  rts
  1215.  
  1216. CHKPROT: dc.w 0
  1217.  
  1218. GETPARITY:
  1219.  move.w #6,d3
  1220. .calcparity:
  1221.  btst d3,d0
  1222.  beq.s .nochange
  1223.  bchg #7,d0
  1224. .nochange:
  1225.  dbra d3,.calcparity
  1226.  rts
  1227.  
  1228. CHECKPARITY:
  1229.  move.w #6,d3
  1230.  move.b #$0,d2
  1231. .calcparity:
  1232.  btst d3,d0
  1233.  beq.s .nochange
  1234.  bchg #7,d2
  1235. .nochange:
  1236.  dbra d3,.calcparity
  1237.  move.b d0,d1
  1238.  and.b #$80,d1
  1239.  eor.b d1,d2
  1240.  sne.s d5
  1241.  rts
  1242.  
  1243. CALCPASSWORD:
  1244.  rts
  1245.  
  1246. PASSLINETOGAME:
  1247.  rts
  1248.  
  1249. illega:
  1250.  
  1251.  move.w #-1,d0
  1252.  
  1253.  rts
  1254.  
  1255. PASSBUFFER:
  1256.  ds.b 8
  1257.  
  1258. CHECKBUFFER: ds.b 8
  1259.  
  1260. PASS:
  1261.  ds.b 16
  1262.  
  1263. **************************************************
  1264.  
  1265. CHANGECONTROLS:
  1266.  
  1267.  move.w #6,OptScrn
  1268.  bsr DRAWOPTSCRN
  1269.  move.w #0,OPTNUM
  1270.  bsr HIGHLIGHT
  1271.  bsr WAITREL
  1272.  
  1273. .rdlop:
  1274.  bsr CHECKMENU
  1275.  tst.w d0
  1276.  blt.s .rdlop
  1277.  
  1278.  cmp.w #15,d0
  1279.  beq .backtomain
  1280.  
  1281.  move.l #KEY_LINES,a0
  1282.  move.w d0,d1
  1283.  muls #40,d1
  1284.  add.l d1,a0
  1285.  add.w #32,a0
  1286.  move.l #$20202020,(a0)
  1287.  movem.l d0/a0,-(a7)
  1288.  bsr JUSTDRAWIT
  1289.  movem.l (a7)+,d0/a0 
  1290.  
  1291.  clr.b lastpressed
  1292.  
  1293. .wtkey
  1294.  tst.b lastpressed
  1295.  beq .wtkey
  1296.  
  1297.  move.l #CONTROLBUFFER,a1
  1298.  moveq #0,d1
  1299.  move.b lastpressed,d1
  1300.  move.b d1,(a1,d0.w)
  1301.  move.l #KVALTOASC,a1
  1302.  move.l (a1,d1.w*4),(a0)
  1303.  bsr JUSTDRAWIT
  1304.  bsr WAITREL
  1305.  bra .rdlop
  1306.  
  1307. .backtomain:
  1308.  rts
  1309.  
  1310. **************************************************
  1311.  
  1312.  
  1313. MAXLEVEL: dc.w 0
  1314.  
  1315. SHOWCREDITS:
  1316.  move.w #2,OptScrn
  1317.  bsr DRAWOPTSCRN
  1318.  move.w #0,OPTNUM
  1319.  bsr HIGHLIGHT
  1320.  
  1321.  bsr WAITREL
  1322.  
  1323. .rdlop:
  1324.  bsr CHECKMENU
  1325.  tst.w d0
  1326.  blt.s .rdlop
  1327.  
  1328.  bra READMAINMENU
  1329.  
  1330. HELDDOWN:
  1331.  dc.w 0
  1332.  
  1333. WAITREL:
  1334.  
  1335.  movem.l d0/d1/d2/d3,-(a7)
  1336.  
  1337.  move.l #KeyMap,a5
  1338. WAITREL2:
  1339.  btst #7,$bfe001
  1340.  beq.s WAITREL2
  1341.  
  1342.  IFEQ CD32VER
  1343.  tst.b $40(a5)
  1344.  bne.s WAITREL2
  1345.  tst.b $44(a5)
  1346.  bne.s WAITREL2
  1347.  tst.b $4c(a5)
  1348.  bne.s WAITREL2
  1349.  tst.b $4d(a5)
  1350.  bne.s WAITREL2
  1351.  ENDC
  1352.  
  1353.  btst #1,$dff00c
  1354.  sne d0
  1355.  btst #1,$dff00d
  1356.  sne d1
  1357.  btst #0,$dff00c
  1358.  sne d2
  1359.  btst #0,$dff00d
  1360.  sne d3
  1361.  
  1362.  eor.b d0,d2
  1363.  eor.b d1,d3
  1364.  tst.b d2
  1365.  bne.s WAITREL2
  1366.  tst.b d3
  1367.  bne.s WAITREL2
  1368.  
  1369.  
  1370.  movem.l (a7)+,d0/d1/d2/d3
  1371.  rts
  1372.  
  1373. PUTINLINE:
  1374.  moveq #39,d0
  1375. pill
  1376.  move.b (a0)+,(a1)+
  1377.  dbra d0,pill
  1378.  rts
  1379.  
  1380. CHECKMENU:
  1381.  btst #1,$dff00c
  1382.  sne d0
  1383.  btst #1,$dff00d
  1384.  sne d1
  1385.  btst #0,$dff00c
  1386.  sne d2
  1387.  btst #0,$dff00d
  1388.  sne d3
  1389.  
  1390.  eor.b d0,d2
  1391.  eor.b d1,d3
  1392.  
  1393.  move.l #KeyMap,a5
  1394.  move.b $4c(a5),d0
  1395.  move.b $4d(a5),d1
  1396.  or.b d1,d3
  1397.  or.b d0,d2
  1398.  
  1399.  move.w OptScrn,d0
  1400.  move.l #MENUDATA,a0
  1401.  move.l 4(a0,d0.w*8),a0    ; opt data
  1402.  
  1403.  move.w OPTNUM,d0
  1404.  
  1405.  tst.b d2
  1406.  beq.s NOPREV
  1407.  
  1408.  
  1409.  sub.w #1,d0
  1410.  bge.s NOPREV
  1411.  
  1412.  move.w #0,d0 
  1413.  
  1414. NOPREV:
  1415.  
  1416.  tst.b d3
  1417.  beq.s NONEXT
  1418.  
  1419.  bsr WAITREL
  1420.  
  1421.  add.w #1,d0
  1422.  tst.w (a0,d0.w*8)
  1423.  bge.s NONEXT
  1424.  
  1425.  subq #1,d0
  1426.  
  1427. NONEXT:
  1428.  
  1429.  cmp.w OPTNUM,d0
  1430.  beq.s .nochange
  1431.  
  1432.  bsr HIGHLIGHT
  1433.  move.w d0,OPTNUM
  1434.  bsr HIGHLIGHT
  1435.  bsr WAITREL
  1436.  
  1437. .nochange:
  1438.  
  1439.  move.w #-1,d0
  1440.  
  1441.  btst #7,$bfe001
  1442.  beq.s select
  1443.  move.b $40(a5),d1
  1444.  or.b $44(a5),d1
  1445.  tst.b d1
  1446.  beq.s noselect
  1447.  
  1448. select:
  1449.  bsr WAITREL
  1450.  move.w OPTNUM,d0
  1451. noselect:
  1452.  
  1453.  rts
  1454.  
  1455. HIGHLIGHT:
  1456.  
  1457.  SAVEREGS
  1458.  
  1459.  move.w OptScrn,d0
  1460.  move.l #MENUDATA,a0
  1461.  move.l 4(a0,d0.w*8),a0
  1462.  move.w OPTNUM,d0
  1463.  lea (a0,d0.w*8),a0
  1464.  move.w (a0)+,d0    ;left
  1465.  move.w (a0)+,d1    ;top
  1466.  move.w (a0)+,d2    ;width
  1467.  
  1468.  muls #16*8,d1
  1469.  move.l OPTSPRADDR,a1
  1470.  add.w d1,a1
  1471.  add.w #8+16,a1
  1472.  move.l #SCRTOSPR2,a5
  1473.  adda.w d0,a5
  1474.  adda.w d0,a5
  1475.  
  1476. NOTLOP:
  1477.  
  1478.  move.w (a5)+,d3
  1479.  lea (a1,d3.w),a2
  1480.  not.b (a2)
  1481.  not.b 16(a2)
  1482.  not.b 32(a2)
  1483.  not.b 48(a2)
  1484.  not.b 64(a2)
  1485.  not.b 80(a2)
  1486.  not.b 96(a2)
  1487.  not.b 112(a2)
  1488.  not.b 128(a2)
  1489.  subq #1,d2
  1490.  bgt.s NOTLOP
  1491.  
  1492.  GETREGS
  1493.  rts
  1494.  
  1495. SCRTOSPR2:
  1496. val SET 0
  1497.  REPT 6
  1498.  dc.w val+0
  1499.  dc.w val+1
  1500.  dc.w val+2
  1501.  dc.w val+3
  1502.  dc.w val+4
  1503.  dc.w val+5
  1504.  dc.w val+6
  1505.  dc.w val+7
  1506. val SET val+258*16
  1507.  ENDR
  1508.  
  1509. CLROPTSCRN:
  1510.  
  1511.  move.l #$2cdfea,d0
  1512.  move.w (a4,d0.l),d0
  1513.  add.w d0,RVAL2
  1514.  
  1515.  move.l OPTSPRADDR,a0
  1516.  lea 16(a0),a1
  1517.  lea 16+(258*16)(a0),a2
  1518.  lea 16+(258*16*2)(a0),a3
  1519.  lea 16+(258*16*3)(a0),a4
  1520.  lea 258*16(a4),a0
  1521.  
  1522.  move.w #256,d0
  1523.  moveq #0,d1
  1524. CLRLOP:
  1525.  move.l d1,(a0)+
  1526.  move.l d1,(a0)+
  1527.  move.l d1,(a0)+
  1528.  move.l d1,(a0)+
  1529.  move.l d1,(a1)+
  1530.  move.l d1,(a1)+
  1531.  move.l d1,(a1)+
  1532.  move.l d1,(a1)+
  1533.  move.l d1,(a2)+
  1534.  move.l d1,(a2)+
  1535.  move.l d1,(a2)+
  1536.  move.l d1,(a2)+
  1537.  move.l d1,(a3)+
  1538.  move.l d1,(a3)+
  1539.  move.l d1,(a3)+
  1540.  move.l d1,(a3)+
  1541.  move.l d1,(a4)+
  1542.  move.l d1,(a4)+
  1543.  move.l d1,(a4)+
  1544.  move.l d1,(a4)+
  1545.  dbra d0,CLRLOP
  1546.  
  1547.  move.l OPTSPRADDR,a0
  1548.  move.w #44*256+64,(a0)
  1549.  move.w #44*256+2,8(a0)
  1550.  add.l #258*16,a0
  1551.  
  1552.  move.w #44*256+96,(a0)
  1553.  move.w #44*256+2,8(a0)
  1554.  add.l #258*16,a0
  1555.  
  1556.  move.w #44*256+128,(a0)
  1557.  move.w #44*256+2,8(a0)
  1558.  add.l #258*16,a0
  1559.  
  1560.  move.w #44*256+160,(a0)
  1561.  move.w #44*256+2,8(a0)
  1562.  add.l #258*16,a0
  1563.  
  1564.  move.w #44*256+192,(a0)
  1565.  move.w #44*256+2,8(a0)
  1566.  
  1567.  rts
  1568.  
  1569. DRAWOPTSCRN:
  1570.  
  1571.  bsr CLROPTSCRN
  1572.  
  1573. JUSTDRAWIT:
  1574.  
  1575.  move.l #font,a0
  1576.  move.l #MENUDATA,a1
  1577.  move.w OptScrn,d0
  1578.  move.l (a1,d0.w*8),a1
  1579.  
  1580.  move.l OPTSPRADDR,a3
  1581.  add.l #16,a3
  1582.  moveq #0,d2
  1583.  
  1584.  move.w #31,d0
  1585. linelop:
  1586.  move.w #39,d1
  1587.  move.l #SCRTOSPR,a4
  1588.  move.l a3,a2
  1589. charlop:
  1590.  move.b (a1)+,d2
  1591.  lea (a0,d2.w*8),a5
  1592.  move.b (a5)+,(a2)
  1593.  move.b (a5)+,16(a2)
  1594.  move.b (a5)+,32(a2)
  1595.  move.b (a5)+,48(a2)
  1596.  move.b (a5)+,64(a2)
  1597.  move.b (a5)+,80(a2)
  1598.  move.b (a5)+,96(a2)
  1599.  move.b (a5),112(a2)
  1600.  add.w (a4)+,a2
  1601.  dbra d1,charlop
  1602.  add.w #16*8,a3
  1603.  dbra d0,linelop
  1604.  
  1605.  rts
  1606.   
  1607. SCRTOSPR:
  1608.  dc.w 1,1,1,1,1,1,1,258*16-7
  1609.  dc.w 1,1,1,1,1,1,1,258*16-7
  1610.  dc.w 1,1,1,1,1,1,1,258*16-7
  1611.  dc.w 1,1,1,1,1,1,1,258*16-7
  1612.  dc.w 1,1,1,1,1,1,1,258*16-7
  1613.  dc.w 1,1,1,1,1,1,1,258*16-7
  1614.   
  1615. OPTNUM: dc.w 0
  1616. OptScrn: dc.w 0
  1617.  
  1618. SAVEGAMENAME: dc.b "tkg2:boot.dat",0
  1619.  even
  1620.  
  1621. SAVEGAMEPOS: dc.l 0
  1622. SAVEGAMELEN: dc.l 0
  1623.  
  1624. LOADPOSITION: 
  1625.  
  1626.  move.l #SAVEGAMENAME,a0
  1627.  move.l #SAVEGAMEPOS,d0
  1628.  move.l #SAVEGAMELEN,d1
  1629.  jsr INITQUEUE
  1630.  jsr QUEUEFILE
  1631.  jsr FLUSHQUEUE
  1632.  
  1633.  move.l SAVEGAMEPOS,a2    ; address of first saved game.
  1634.  
  1635.  move.l #LSLOTA,a4
  1636.  
  1637.  move.l a2,a3
  1638.  move.w #5,d7
  1639. .findlevs:
  1640.  
  1641.  move.l a4,a1
  1642.  move.w (a3),d1
  1643.  muls #40,d1
  1644.  move.l LINKFILE,a0
  1645.  add.l #LevelName,a0
  1646.  add.l d1,a0
  1647.  jsr PUTINLINE
  1648.  add.l #80,a4
  1649.  add.w #2+(22*2)+(12*2),a3
  1650.  
  1651.  dbra d7,.findlevs
  1652.  
  1653.  move.w #8,OptScrn
  1654.  move.w #0,OPTNUM
  1655.  
  1656.  bsr DRAWOPTSCRN
  1657.  bsr HIGHLIGHT
  1658.  bsr WAITREL
  1659.  
  1660. .rdlop:
  1661.  bsr CHECKMENU
  1662.  tst.w d0
  1663.  blt.s .rdlop
  1664.  
  1665.  cmp.w #6,d0
  1666.  beq.s .noload
  1667.  
  1668.  move.l SAVEGAMEPOS,a0
  1669.  muls #2+(22*2)+(12*2),d0
  1670.  add.l d0,a0
  1671.  
  1672.  move.l #MASTERPLAYERONEHEALTH,a1
  1673.  move.w (a0)+,MAXLEVEL
  1674.  
  1675.  REPT 11
  1676.  move.l (a0)+,(a1)+
  1677.  ENDR
  1678.  REPT 6
  1679.  move.l (a0)+,(a1)+
  1680.  ENDR
  1681.  
  1682.  move.w MAXLEVEL,d0
  1683.  move.l #CURRENTLEVELLINE,a1
  1684.  muls #40,d0
  1685.  move.l LINKFILE,a0
  1686.  add.l #LevelName,a0
  1687.  add.l d0,a0
  1688.  bsr PUTINLINE
  1689.  
  1690. .noload:
  1691.  
  1692.  move.l SAVEGAMEPOS,a1
  1693.  move.l SAVEGAMELEN,d0
  1694.  CALLEXEC FreeMem
  1695.  
  1696.  rts
  1697.  
  1698. SAVEPOSITION:
  1699.  
  1700.  
  1701.  move.l #SAVEGAMENAME,a0
  1702.  move.l #SAVEGAMEPOS,d0
  1703.  move.l #SAVEGAMELEN,d1
  1704.  jsr INITQUEUE
  1705.  jsr QUEUEFILE
  1706.  jsr FLUSHQUEUE
  1707.  
  1708.  move.l SAVEGAMEPOS,a2    ; address of first saved game.
  1709.  
  1710.  move.l #SSLOTA,a4
  1711.  
  1712.  move.l a2,a3
  1713.  move.w #5,d7
  1714. .findlevs:
  1715.  
  1716.  move.l a4,a1
  1717.  move.w (a3),d1
  1718.  muls #40,d1
  1719.  move.l LINKFILE,a0
  1720.  add.l #LevelName,a0
  1721.  add.l d1,a0
  1722.  jsr PUTINLINE
  1723.  add.l #80,a4
  1724.  add.w #2+(22*2)+(12*2),a3
  1725.  
  1726.  dbra d7,.findlevs
  1727.  
  1728.  move.w #9,OptScrn
  1729.  move.w #0,OPTNUM
  1730.  
  1731.  bsr DRAWOPTSCRN
  1732.  bsr HIGHLIGHT
  1733.  bsr WAITREL
  1734.  
  1735. .rdlop:
  1736.  bsr CHECKMENU
  1737.  tst.w d0
  1738.  blt.s .rdlop
  1739.  
  1740.  cmp.w #6,d0
  1741.  beq .nosave
  1742.  
  1743.  move.l SAVEGAMEPOS,a0
  1744.  muls #2+(22*2)+(12*2),d0
  1745.  add.l d0,a0
  1746.  
  1747.  move.l #MASTERPLAYERONEHEALTH,a1
  1748.  move.w MAXLEVEL,(a0)+
  1749.  
  1750.  REPT 11
  1751.  move.l (a1)+,(a0)+
  1752.  ENDR
  1753.  REPT 6
  1754.  move.l (a1)+,(a0)+
  1755.  ENDR
  1756.   
  1757.  move.l old,$dff080
  1758.  move.w #$8020,$dff000+intena
  1759.  
  1760.  move.l _IntuitionBase,a6
  1761.  jsr _LVORethinkDisplay(a6)
  1762.  
  1763.  move.l doslib,a6
  1764.  move.l #SAVEGAMENAME,d1
  1765.  move.l #1006,d2
  1766.  jsr -30(a6)
  1767.  move.l d0,handle
  1768.  
  1769.  move.l doslib,a6
  1770.  move.l SAVEGAMEPOS,d2
  1771.  move.l handle,d1
  1772.  move.l SAVEGAMELEN,d3
  1773.  jsr _LVOWrite(a6)
  1774.  
  1775.  move.l doslib,a6
  1776.  move.l handle,d1
  1777.  jsr -36(a6)
  1778.  
  1779.  move.l doslib,a6
  1780.  move.l #200,d1
  1781.  jsr -198(a6) 
  1782.  
  1783.  move.w #$0020,$dff000+intena
  1784.  move.l #titlecop,$dff080
  1785.   
  1786. .nosave:
  1787.  
  1788.  move.l SAVEGAMEPOS,a1
  1789.  move.l SAVEGAMELEN,d0
  1790.  CALLEXEC FreeMem
  1791.  
  1792.  rts
  1793.  
  1794. MENUDATA:
  1795. ;0
  1796.  dc.l ONEPLAYERMENU_TXT
  1797.  dc.l ONEPLAYERMENU_OPTS
  1798. ;1
  1799.  dc.l INSTRUCTIONS_TXT
  1800.  dc.l INSTRUCTIONS_OPTS
  1801. ;2
  1802.  dc.l CREDITMENU_TXT
  1803.  dc.l CREDITMENU_OPTS
  1804. ;3
  1805.  dc.l ASKFORDISK_TXT
  1806.  dc.l ASKFORDISK_OPTS
  1807. ;4
  1808. ; dc.l ONEPLAYERMENU_TXT
  1809. ; dc.l ONEPLAYERMENU_OPTS
  1810.  dc.l MASTERPLAYERMENU_TXT
  1811.  dc.l MASTERPLAYERMENU_OPTS
  1812. ;5
  1813.  dc.l SLAVEPLAYERMENU_TXT
  1814.  dc.l SLAVEPLAYERMENU_OPTS
  1815. ;6
  1816.  dc.l CONTROL_TXT
  1817.  dc.l CONTROL_OPTS
  1818. ;7
  1819.  dc.l PROTMENU_TXT
  1820.  dc.l CONTROL_OPTS
  1821. ;8
  1822.  dc.l LOADMENU_TXT
  1823.  dc.l LOADMENU_OPTS
  1824. ;9
  1825.  dc.l SAVEMENU_TXT
  1826.  dc.l SAVEMENU_OPTS
  1827. ;10
  1828.  dc.l LEVELDISK_TXT
  1829.  dc.l ASKFORDISK_OPTS
  1830.  
  1831.  
  1832. EMPTYSLOTNAME:
  1833. ;      0123456789012345678901234567890123456789
  1834.  dc.b '               EMPTY SLOT               ' 
  1835.  
  1836. LOADMENU_TXT: 
  1837. ;      0123456789012345678901234567890123456789
  1838.  dc.b '                                        ' ;0
  1839.  dc.b '                                        ' ;1
  1840.  dc.b '                                        ' ;2
  1841.  dc.b '                                        ' ;3
  1842.  dc.b '         LOAD A SAVED POSITION:         ' ;4
  1843.  dc.b '                                        ' ;5
  1844.  dc.b '                                        ' ;6
  1845.  dc.b '                                        ' ;7
  1846.  dc.b '                                        ' ;8
  1847. LSLOTA:
  1848.  dc.b '                                        ' ;9
  1849.  dc.b '                                        ' ;0
  1850. LSLOTB:
  1851.  dc.b '                                        ' ;1
  1852.  dc.b '                                        ' ;2
  1853. LSLOTC:
  1854.  dc.b '                                        ' ;3
  1855.  dc.b '                                        ' ;4
  1856. LSLOTD:
  1857.  dc.b '                                        ' ;5
  1858.  dc.b '                                        ' ;6
  1859. LSLOTE:
  1860.  dc.b '                                        ' ;7
  1861.  dc.b '                                        ' ;8
  1862. LSLOTF:
  1863.  dc.b '                                        ' ;9
  1864.  dc.b '                                        ' ;0
  1865.  dc.b '               * CANCEL *               ' ;1
  1866.  dc.b '                                        ' ;2
  1867.  dc.b '                                        ' ;3
  1868.  dc.b '                                        ' ;4
  1869.  dc.b '                                        ' ;5
  1870.  dc.b '                                        ' ;6
  1871.  dc.b '                                        ' ;7
  1872.  dc.b '                                        ' ;8
  1873.  dc.b '                                        ' ;9
  1874.  dc.b '                                        ' ;0
  1875.  dc.b '                                        ' ;1
  1876.  
  1877. LOADMENU_OPTS:
  1878.  dc.w 0,9,40,1
  1879.  dc.w 0,11,40,1
  1880.  dc.w 0,13,40,1
  1881.  dc.w 0,15,40,1
  1882.  dc.w 0,17,40,1
  1883.  dc.w 0,19,40,1
  1884.  dc.w 14,21,12,1
  1885.  dc.w -1
  1886.  
  1887. LEVELDISK_TXT:
  1888. ;      0123456789012345678901234567890123456789
  1889.  dc.b '                                        ' ;0
  1890.  dc.b '                                        ' ;0
  1891.  dc.b '                                        ' ;0
  1892.  dc.b '                                        ' ;0
  1893.  dc.b '                                        ' ;0
  1894.  dc.b '                                        ' ;0
  1895.  dc.b '                                        ' ;0
  1896.  dc.b '                                        ' ;0
  1897.  dc.b '                                        ' ;0
  1898.  dc.b '                                        ' ;0
  1899.  dc.b '                                        ' ;0
  1900.  dc.b '  IF PLAYING FROM DISK, PLEASE INSERT   ' ;0
  1901.  dc.b '       LEVELS DISK IN DRIVE DF0:        ' ;0
  1902.  dc.b '                                        ' ;0
  1903.  dc.b '     PRESS MOUSE BUTTON WHEN READY..    ' ;0
  1904.  dc.b '                                        ' ;0
  1905.  dc.b '                                        ' ;0
  1906.  dc.b '                                        ' ;0
  1907.  dc.b '                                        ' ;0
  1908.  dc.b '                                        ' ;0
  1909.  dc.b '                                        ' ;0
  1910.  dc.b '                                        ' ;0
  1911.  dc.b '                                        ' ;0
  1912.  dc.b '                                        ' ;0
  1913.  dc.b '                                        ' ;0
  1914.  dc.b '                                        ' ;0
  1915.  dc.b '                                        ' ;0
  1916.  dc.b '                                        ' ;0
  1917.  dc.b '                                        ' ;0
  1918.  dc.b '                                        ' ;0
  1919.  dc.b '                                        ' ;0
  1920.  dc.b '                                        ' ;0
  1921.  
  1922.  
  1923. SAVEMENU_TXT: 
  1924. ;      0123456789012345678901234567890123456789
  1925.  dc.b '                                        ' ;0
  1926.  dc.b '                                        ' ;1
  1927.  dc.b '                                        ' ;2
  1928.  dc.b '                                        ' ;3
  1929.  dc.b '         SAVE CURRENT POSITION:         ' ;4
  1930.  dc.b '                                        ' ;5
  1931.  dc.b '                                        ' ;6
  1932.  dc.b '                                        ' ;7
  1933.  dc.b '                                        ' ;8
  1934. SSLOTA:
  1935.  dc.b '                                        ' ;9
  1936.  dc.b '                                        ' ;0
  1937. SSLOTB:
  1938.  dc.b '                                        ' ;1
  1939.  dc.b '                                        ' ;2
  1940. SSLOTC:
  1941.  dc.b '                                        ' ;3
  1942.  dc.b '                                        ' ;4
  1943. SSLOTD:
  1944.  dc.b '                                        ' ;5
  1945.  dc.b '                                        ' ;6
  1946. SSLOTE:
  1947.  dc.b '                                        ' ;7
  1948.  dc.b '                                        ' ;8
  1949. SSLOTF:
  1950.  dc.b '                                        ' ;9
  1951.  dc.b '                                        ' ;0
  1952.  dc.b '               * CANCEL *               ' ;1
  1953.  dc.b '                                        ' ;2
  1954.  dc.b '                                        ' ;3
  1955.  dc.b '                                        ' ;4
  1956.  dc.b '                                        ' ;5
  1957.  dc.b '                                        ' ;6
  1958.  dc.b '                                        ' ;7
  1959.  dc.b '                                        ' ;8
  1960.  dc.b '                                        ' ;9
  1961.  dc.b '                                        ' ;0
  1962.  dc.b '                                        ' ;1
  1963.  
  1964. SAVEMENU_OPTS:
  1965.  dc.w 0,9,40,1
  1966.  dc.w 0,11,40,1
  1967.  dc.w 0,13,40,1
  1968.  dc.w 0,15,40,1
  1969.  dc.w 0,17,40,1
  1970.  dc.w 0,19,40,1
  1971.  dc.w 14,21,12,1
  1972.  dc.w -1
  1973.  
  1974.  
  1975. ASKFORDISK_TXT:
  1976. ;      0123456789012345678901234567890123456789
  1977.  dc.b '                                        ' ;0
  1978.  dc.b '                                        ' ;1
  1979.  dc.b '                                        ' ;2
  1980.  dc.b '                                        ' ;3
  1981.  dc.b '                                        ' ;4
  1982.  dc.b '                                        ' ;5
  1983.  dc.b '                                        ' ;6
  1984.  dc.b '                                        ' ;7
  1985.  dc.b '                                        ' ;8
  1986.  dc.b '                                        ' ;9
  1987.  dc.b '                                        ' ;0
  1988.  dc.b '                                        ' ;1
  1989.  dc.b '                                        ' ;2
  1990.  dc.b '         PLEASE INSERT VOLUME:          ' ;3
  1991.  dc.b '                                        ' ;4
  1992. VOLLINE:
  1993.  dc.b '                                        ' ;9
  1994.  dc.b '                                        ' ;9
  1995.  dc.b '          PRESS MOUSE BUTTON            ' ;5
  1996.  dc.b '          WHEN DISK ACTIVITY            ' ;6
  1997.  dc.b '               FINISHES                 ' ;7
  1998.  dc.b '                                        ' ;8
  1999.  dc.b '                                        ' ;1
  2000.  dc.b '                                        ' ;2
  2001.  dc.b '                                        ' ;3
  2002.  dc.b '                                        ' ;4
  2003.  dc.b '                                        ' ;5
  2004.  dc.b '                                        ' ;6
  2005.  dc.b '                                        ' ;7
  2006.  dc.b '                                        ' ;8
  2007.  dc.b '                                        ' ;9
  2008.  dc.b '                                        ' ;0
  2009.  dc.b '                                        ' ;1
  2010.  
  2011. ASKFORDISK_OPTS:
  2012.  dc.w -1
  2013.  
  2014.  
  2015. ONEPLAYERMENU_TXT:
  2016. ;      0123456789012345678901234567890123456789
  2017.  dc.b '                                        ' ;0
  2018.  dc.b '                                        ' ;1
  2019.  dc.b '                                        ' ;2
  2020.  dc.b '                                        ' ;3
  2021.  dc.b '                                        ' ;4
  2022.  dc.b '                                        ' ;5
  2023.  dc.b '                                        ' ;6
  2024.  dc.b '                                        ' ;7
  2025.  dc.b '                                        ' ;8
  2026.  dc.b '                                        ' ;9
  2027.  dc.b '                                        ' ;0
  2028. CURRENTLEVELLINE:
  2029.  dc.b '         *** A.F DEMO LEVEL ***         ' ;1 
  2030.  dc.b '                                        ' ;2
  2031.  dc.b '                1 PLAYER                ' ;3
  2032.  dc.b '                                        ' ;4
  2033.  dc.b '               PLAY  GAME               ' ;5
  2034.  dc.b '                                        ' ;6
  2035.  dc.b '            CONTROL  OPTIONS            ' ;7
  2036.  dc.b '                                        ' ;8
  2037.  dc.b '              GAME CREDITS              ' ;9
  2038.  dc.b '                                        ' ;0
  2039.  dc.b '             LOAD  POSITION             ' ;1
  2040.  dc.b '                                        ' ;2
  2041. PASSWORDLINE:
  2042.  dc.b '             SAVE  POSITION             ' ;1
  2043.  dc.b '                                        ' ;4
  2044.  dc.b '                  QUIT                  ' ;5
  2045.  dc.b '                                        ' ;6
  2046.  dc.b '                                        ' ;7
  2047.  dc.b '                                        ' ;8
  2048.  dc.b '                                        ' ;9
  2049.  dc.b '                                        ' ;0
  2050.  dc.b '                                        ' ;1
  2051.  
  2052. ONEPLAYERMENU_OPTS:
  2053.  dc.w 0,11,40,1
  2054.  dc.w 16,13,8,1
  2055.  dc.w 15,15,10,1
  2056.  dc.w 12,17,16,1
  2057.  dc.w 14,19,12,1
  2058.  dc.w 12,21,16,1
  2059.  dc.w 12,23,16,1
  2060.  dc.w 18,25,4,1
  2061.  dc.w -1
  2062.  
  2063.  
  2064. MASTERPLAYERMENU_TXT:
  2065. ;      0123456789012345678901234567890123456789
  2066.  dc.b '                                        ' ;0
  2067.  dc.b '                                        ' ;1
  2068.  dc.b '                                        ' ;2
  2069.  dc.b '                                        ' ;3
  2070.  dc.b '                                        ' ;4
  2071.  dc.b '                                        ' ;5
  2072.  dc.b '                                        ' ;6
  2073.  dc.b '                                        ' ;7
  2074.  dc.b '                                        ' ;8
  2075.  dc.b '                                        ' ;9
  2076.  dc.b '                                        ' ;0
  2077.  dc.b '                                        ' ;1
  2078.  dc.b '            2 PLAYER  MASTER            ' ;2
  2079.  dc.b '                                        ' ;3
  2080. CURRENTLEVELLINEM:
  2081.  dc.b '           LEVEL 1 : THE GATE           ' ;4 
  2082.  dc.b '                                        ' ;5
  2083.  dc.b '               PLAY  GAME               ' ;6
  2084.  dc.b '                                        ' ;7
  2085.  dc.b '            CONTROL  OPTIONS            ' ;8
  2086.  dc.b '                                        ' ;9
  2087.  dc.b '                                        ' ;0
  2088.  dc.b '                                        ' ;1
  2089.  dc.b '                                        ' ;2
  2090.  dc.b '                                        ' ;3
  2091.  dc.b '                                        ' ;4
  2092.  dc.b '                                        ' ;5
  2093.  dc.b '                                        ' ;6
  2094.  dc.b '                                        ' ;7
  2095.  dc.b '                                        ' ;8
  2096.  dc.b '                                        ' ;9
  2097.  dc.b '                                        ' ;0
  2098.  dc.b '                                        ' ;1
  2099.  
  2100. MASTERPLAYERMENU_OPTS:
  2101.  dc.w 12,12,16,1
  2102.  dc.w 6,14,28,1
  2103.  dc.w 15,16,10,1
  2104.  dc.w 12,18,16,1
  2105.  dc.w -1
  2106.  
  2107. SLAVEPLAYERMENU_TXT:
  2108. ;      0123456789012345678901234567890123456789
  2109.  dc.b '                                        ' ;0
  2110.  dc.b '                                        ' ;1
  2111.  dc.b '                                        ' ;2
  2112.  dc.b '                                        ' ;3
  2113.  dc.b '                                        ' ;4
  2114.  dc.b '                                        ' ;5
  2115.  dc.b '                                        ' ;6
  2116.  dc.b '                                        ' ;7
  2117.  dc.b '                                        ' ;8
  2118.  dc.b '                                        ' ;9
  2119.  dc.b '                                        ' ;9
  2120.  dc.b '                                        ' ;1
  2121.  dc.b '             2 PLAYER SLAVE             ' ;4
  2122.  dc.b '                                        ' ;3
  2123.  dc.b '               PLAY  GAME               ' ;2
  2124.  dc.b '                                        ' ;5
  2125.  dc.b '            CONTROL  OPTIONS            ' ;0
  2126.  dc.b '                                        ' ;1
  2127.  dc.b '                                        ' ;3
  2128.  dc.b '                                        ' ;7
  2129.  dc.b '                                        ' ;7
  2130.  dc.b '                                        ' ;3
  2131.  dc.b '                                        ' ;3
  2132.  dc.b '                                        ' ;3
  2133.  dc.b '                                        ' ;4
  2134.  dc.b '                                        ' ;5
  2135.  dc.b '                                        ' ;6
  2136.  dc.b '                                        ' ;7
  2137.  dc.b '                                        ' ;9
  2138.  dc.b '                                        ' ;9
  2139.  dc.b '                                        ' ;9
  2140.  dc.b '                                        ' ;9
  2141.  
  2142.  
  2143. PROTMENU_TXT:
  2144. ;      0123456789012345678901234567890123456789
  2145.  dc.b '                                        ' ;0
  2146.  dc.b '                                        ' ;1
  2147.  dc.b '                                        ' ;2
  2148.  dc.b '                                        ' ;3
  2149.  dc.b '                                        ' ;4
  2150.  dc.b '                                        ' ;5
  2151.  dc.b '                                        ' ;6
  2152.  dc.b '                                        ' ;7
  2153.  dc.b '                                        ' ;8
  2154.  dc.b '                                        ' ;9
  2155.  dc.b '                                        ' ;0
  2156.  dc.b '                                        ' ;1
  2157.  dc.b ' TYPE IN THREE DIGIT CODE FROM MANUAL : ' ;2
  2158.  dc.b '                                        ' ;3
  2159. PROTLINE:
  2160.  dc.b '        TABLE 00 ROW 00 COLUMN 00       ' ;4
  2161.  dc.b '                                        ' ;5
  2162.  dc.b '                                        ' ;6
  2163.  dc.b '                                        ' ;7
  2164.  dc.b '                                        ' ;8
  2165.  dc.b '                                        ' ;9
  2166.  dc.b '                                        ' ;0
  2167.  dc.b '                                        ' ;1
  2168.  dc.b '                                        ' ;2
  2169.  dc.b '                                        ' ;3
  2170.  dc.b '                                        ' ;4
  2171.  dc.b '                                        ' ;5
  2172.  dc.b '                                        ' ;6
  2173.  dc.b '                                        ' ;7
  2174.  dc.b '                                        ' ;9
  2175.  dc.b '                                        ' ;0
  2176.  dc.b '                                        ' ;1
  2177.  
  2178.  
  2179.  
  2180. SLAVEPLAYERMENU_OPTS:
  2181.  dc.w 12,12,16,1
  2182.  dc.w 15,14,10,1
  2183.  dc.w 12,16,16,1
  2184.  dc.w -1
  2185.  
  2186.  
  2187. PLAYER_OPTS:
  2188. ;      0123456789012345678901234567890123456789
  2189.  dc.b '                 1 PLAYER               '
  2190.  dc.b '             2  PLAYER MASTER           '
  2191.  dc.b '              2 PLAYER SLAVE            '
  2192.  
  2193. LEVEL_OPTS:
  2194. ;      0123456789012345678901234567890123456789
  2195.  dc.b  '       CU AMIGA *EXCLUSIVE* DEMO        '
  2196.  dc.b '      LEVEL  2 :       STORAGE BAY      '
  2197.  dc.b '      LEVEL  3 :     SEWER NETWORK      '
  2198.  dc.b '      LEVEL  4 :     THE COURTYARD      '
  2199.  dc.b '      LEVEL  5 :      SYSTEM PURGE      '
  2200.  dc.b '      LEVEL  6 :         THE MINES      '
  2201.  dc.b '      LEVEL  7 :       THE FURNACE      '
  2202.  dc.b '      LEVEL  8 :  TEST ARENA GAMMA      '
  2203.  dc.b '      LEVEL  9 :      SURFACE ZONE      '
  2204.  dc.b '      LEVEL 10 :     TRAINING AREA      '
  2205.  dc.b '      LEVEL 11 :       ADMIN BLOCK      '
  2206.  dc.b '      LEVEL 12 :           THE PIT      '
  2207.  dc.b '      LEVEL 13 :            STRATA      '
  2208.  dc.b '      LEVEL 14 :      REACTOR CORE      '
  2209.  dc.b '      LEVEL 15 :     COOLING TOWER      '
  2210.  dc.b '      LEVEL 16 :    COMMAND CENTRE      '
  2211.  
  2212. CONTROL_TXT:
  2213. ;      0123456789012345678901234567890123456789
  2214.  dc.b '                                        ' ;0
  2215.  dc.b '                                        ' ;1
  2216.  dc.b '            DEFINE  CONTROLS            ' ;2
  2217.  dc.b '                                        ' ;3
  2218. KEY_LINES:
  2219.  dc.b '     TURN LEFT                  LCK     ' ;4
  2220.  dc.b '     TURN RIGHT                 RCK     ' ;5
  2221.  dc.b '     FORWARDS                   UCK     ' ;6
  2222.  dc.b '     BACKWARDS                  DCK     ' ;7
  2223.  dc.b '     FIRE                       RAL     ' ;8
  2224.  dc.b '     OPERATE DOOR/LIFT/SWITCH   SPC     ' ;9
  2225.  dc.b '     RUN                        RSH     ' ;0
  2226.  dc.b '     FORCE SIDESTEP             RAM     ' ;1
  2227.  dc.b '     SIDESTEP LEFT               .      ' ;2
  2228.  dc.b '     SIDESTEP RIGHT              /      ' ;3
  2229.  dc.b '     DUCK                        D      ' ;4
  2230.  dc.b '     LOOK BEHIND                 L      ' ;5
  2231.  dc.b '     JUMP                       KP0     ' ;6
  2232.  dc.b '     LOOK UP                     ]      ' ;7
  2233.  dc.b '     LOOK DOWN                   #      ' ;8
  2234.  dc.b '                                        ' ;9
  2235.  dc.b '             OTHER CONTROLS             ' ;0
  2236.  dc.b '                                        ' ;1
  2237.  dc.b '1-0   Select Weapon P              Pause' ;2
  2238.  dc.b 'F1   Zoom in on map F3 4/8 Channel Sound' ;3
  2239.  dc.b 'F2  Zoom out on map F4 Mono/Stereo Sound' ;4
  2240.  dc.b '    Keypad 1-9 scroll map, 5 centres    ' ;5
  2241.  dc.b '                                        ' ;6
  2242.  dc.b '                                        ' ;7
  2243.  dc.b '               MAIN  MENU               ' ;8
  2244.  dc.b '                                        ' ;9
  2245.  dc.b '                                        ' ;0
  2246.  dc.b '                                        ' ;1
  2247.  
  2248. CONTROL_OPTS:
  2249.  dc.w 5,4,30,1
  2250.  dc.w 5,5,30,1
  2251.  dc.w 5,6,30,1
  2252.  dc.w 5,7,30,1
  2253.  dc.w 5,8,30,1
  2254.  dc.w 5,9,30,1
  2255.  dc.w 5,10,30,1
  2256.  dc.w 5,11,30,1
  2257.  dc.w 5,12,30,1
  2258.  dc.w 5,13,30,1
  2259.  dc.w 5,14,30,1
  2260.  dc.w 5,15,30,1
  2261.  dc.w 5,16,30,1
  2262.  dc.w 5,17,30,1
  2263.  dc.w 5,18,30,1
  2264.  dc.w 15,28,10,1
  2265.  dc.w -1
  2266.  
  2267. PLOPT: dc.w 0
  2268.  
  2269. INSTRUCTIONS_TXT:
  2270. ;      0123456789012345678901234567890123456789
  2271.  dc.b 'Main controls:                          ' ;1
  2272.  dc.b '                                        ' ;2
  2273.  dc.b 'Curs Keys = Forward / Backward          ' ;3
  2274.  dc.b '            Turn left / right           ' ;4
  2275.  dc.b '          Right Alt = Fire              ' ;5
  2276.  dc.b '        Right Shift = Run               ' ;6
  2277.  dc.b '                  > = Slide Left        ' ;7
  2278.  dc.b '                  ? = Slide Right       ' ;8
  2279.  dc.b '              SPACE = Operate Door/Lift ' ;9
  2280.  dc.b '                  D = Duck              ' ;0
  2281.  dc.b '                  J = Joystick Control  ' ;1
  2282.  dc.b '                  K = Keyboard Control  ' ;2
  2283.  dc.b '                                        ' ;3
  2284.  dc.b '              1,2,3 = Select weapon     ' ;4
  2285.  dc.b '              ENTER = Toggle screen size' ;5
  2286.  dc.b '                ESC = Quit              ' ;6
  2287.  dc.b '                                        ' ;7
  2288.  dc.b '                                        ' ;8
  2289.  dc.b 'The one player game has no objective and' ;9
  2290.  dc.b 'the only way to finish is to die or quit' ;0
  2291.  dc.b '                                        ' ;1
  2292.  dc.b 'The two-player game is supposed to be a ' ;2
  2293.  dc.b 'fight to the death but will probably be ' ;3
  2294.  dc.b 'a fight-till-we-find-the-rocket-launcher' ;4
  2295.  dc.b 'then-blow-ourselves-up type game.       ' ;5
  2296.  dc.b '                                        ' ;6
  2297.  dc.b 'LOOK OUT FOR TELEPORTERS: They usually  ' ;7
  2298.  dc.b 'have glowing red walls and overhead     ' ;8
  2299.  dc.b 'lights. Useful for getting behind your  ' ;9
  2300.  dc.b ' opponent!                              ' ;0
  2301.  dc.b '  Just a taster of what is to come....  ' ;1
  2302.  dc.b '                                        ' ;0
  2303.  
  2304. INSTRUCTIONS_OPTS:
  2305.  dc.w 0,0,0,1
  2306.  dc.w -1
  2307.  
  2308. CREDITMENU_TXT:
  2309.  
  2310. ;      0123456789012345678901234567890123456789
  2311.  dc.b '    Programming, Game Code, Graphics    ' ;0
  2312.  dc.b '         Game Design and Manual         ' ;1
  2313.  dc.b '            Andrew Clitheroe            ' ;2
  2314.  dc.b '                                        ' ;3
  2315.  dc.b '       Alien and Scenery Graphics       ' ;4
  2316.  dc.b '             Michael  Green             ' ;5
  2317.  dc.b '                                        ' ;6
  2318.  dc.b '           3D Object Designer           ' ;7
  2319.  dc.b '            Charles Blessing            ' ;8
  2320.  dc.b '                                        ' ;9
  2321.  dc.b '              Level Design              ' ;0
  2322.  dc.b 'Jackie Lang   Michael Green  Ben Chanter' ;1
  2323.  dc.b '                                        ' ;3
  2324.  dc.b '                                        ' ;3
  2325.  dc.b '           Creative  Director           ' ;4
  2326.  dc.b '              Martyn Brown              ' ;5
  2327.  dc.b '                                        ' ;6
  2328.  dc.b '       Project Manager and Manual       ' ;7
  2329.  dc.b '      "Lazy" Phil Quirke-Webster        ' ;8
  2330.  dc.b '                                        ' ;9
  2331.  dc.b '                 Music                  ' ;0
  2332.  dc.b '           Ben "666" Chanter            ' ;1
  2333.  dc.b '                                        ' ;2
  2334.  dc.b '      Cover Illustration and Logo       ' ;3
  2335.  dc.b '             Kevin Jenkins              ' ;4
  2336.  dc.b '                                        ' ;5
  2337.  dc.b '      Packaging and Manual Design       ' ;6
  2338.  dc.b '               Paul Sharp               ' ;7
  2339.  dc.b '                                        ' ;8
  2340.  dc.b '             QA and Playtest            ' ;9
  2341.  dc.b '           Phil and The Wolves          ' ;0
  2342.  dc.b '                                        ' ;1
  2343.  
  2344.  dc.b '    Serial Link and 3D Object Editor:   ' ;4
  2345.  dc.b '                   by                   ' ;5
  2346.  dc.b '            Charles Blessing            ' ;6
  2347.  dc.b '                                        ' ;7
  2348.  dc.b '                Graphics:               ' ;8
  2349.  dc.b '                   by                   ' ;9
  2350.  dc.b '              Mike  Oakley              ' ;0
  2351.  dc.b '                                        ' ;1
  2352.  dc.b '             Title  Picture             ' ;2
  2353.  dc.b '                   by                   ' ;3
  2354.  dc.b '               Mike Green               ' ;4
  2355.  dc.b '                                        ' ;5
  2356.  dc.b ' Inspiration, incentive, moral support, ' ;6
  2357.  dc.b '     level design and plenty of tea     ' ;7
  2358.  dc.b '         generously supplied by         ' ;8
  2359.  dc.b '                                        ' ;9
  2360.  dc.b '              Jackie  Lang              ' ;0
  2361.  dc.b '                                        ' ;1
  2362.  dc.b '    Music for the last demo composed    ' ;2
  2363.  dc.b '       by the inexpressibly evil:       ' ;3
  2364.  dc.b '                                        ' ;8
  2365.  dc.b '            *BAD* BEN CHANTER           ' ;9
  2366.  dc.b '                                        ' ;0
  2367.  dc.b '    Sadly no room for music this time   ' ;1
  2368.  dc.b '                                        ' ;7
  2369.  dc.b '                                        ' ;7
  2370.  
  2371. CREDITMENU_OPTS:
  2372.  dc.w 0,0,1,1
  2373.  dc.w -1
  2374.  
  2375.  
  2376. ;      0123456789012345678901234567890123456789
  2377.  dc.b '                                        ' ;0
  2378.  dc.b '                                        ' ;1
  2379.  dc.b '                                        ' ;2
  2380.  dc.b '                                        ' ;3
  2381.  dc.b '                                        ' ;4
  2382.  dc.b '                                        ' ;5
  2383.  dc.b '                                        ' ;6
  2384.  dc.b '                                        ' ;7
  2385.  dc.b '                                        ' ;8
  2386.  dc.b '                                        ' ;9
  2387.  dc.b '                                        ' ;0
  2388.  dc.b '                                        ' ;1
  2389.  dc.b '                                        ' ;2
  2390.  dc.b '                                        ' ;3
  2391.  dc.b '                                        ' ;4
  2392.  dc.b '                                        ' ;5
  2393.  dc.b '                                        ' ;6
  2394.  dc.b '                                        ' ;7
  2395.  dc.b '                                        ' ;8
  2396.  dc.b '                                        ' ;9
  2397.  dc.b '                                        ' ;0
  2398.  dc.b '                                        ' ;1
  2399.  dc.b '                                        ' ;2
  2400.  dc.b '                                        ' ;3
  2401.  dc.b '                                        ' ;4
  2402.  dc.b '                                        ' ;5
  2403.  dc.b '                                        ' ;6
  2404.  dc.b '                                        ' ;7
  2405.  dc.b '                                        ' ;8
  2406.  dc.b '                                        ' ;9
  2407.  dc.b '                                        ' ;0
  2408.  dc.b '                                        ' ;1
  2409.  
  2410.  
  2411. ********************************************************
  2412.  
  2413. PUTIN32:
  2414.  move.w #31,d2
  2415. p32loop:
  2416.  moveq #0,d5
  2417.  move.l (a0)+,d3
  2418.  move.w d3,d4
  2419.  swap d3
  2420.  move.b d4,d5
  2421.  lsr.w #8,d4
  2422.  
  2423.  muls d0,d3
  2424.  muls d0,d4
  2425.  muls d0,d5
  2426.  lsr.l #8,d3
  2427.  lsr.l #8,d4
  2428.  lsr.l #8,d5
  2429.  move.w d3,d6
  2430.  swap d3
  2431.  move.w d6,d3
  2432.  move.w d4,d6
  2433.  swap d4
  2434.  move.w d6,d4
  2435.  move.w d5,d6
  2436.  swap d5
  2437.  move.w d6,d5
  2438.  and.w #%11110000,d3
  2439.  and.w #%11110000,d4
  2440.  and.w #%11110000,d5
  2441.  lsl.w #4,d3
  2442.  add.w d4,d3
  2443.  lsr.w #4,d5
  2444.  add.w d5,d3
  2445.  move.w d3,2(a1)
  2446.  swap d3
  2447.  swap d4
  2448.  swap d5
  2449.  and.w #%1111,d3
  2450.  and.w #%1111,d4
  2451.  and.w #%1111,d5
  2452.  lsl.w #8,d3
  2453.  lsl.w #4,d4
  2454.  add.w d4,d3
  2455.  add.w d5,d3
  2456.  move.w d3,2+(132*4)(a1)
  2457.  addq #4,a1
  2458.  dbra d2,p32loop
  2459.  
  2460.  
  2461.  rts
  2462.  
  2463. **************************************
  2464.  
  2465. FADEAMOUNT: dc.w 0
  2466. FADEVAL: dc.w 0
  2467.  
  2468. FADEUPTITLE:
  2469.  
  2470.  move.w FADEVAL,d0
  2471.  move.w FADEAMOUNT,d1
  2472. fadeuploop:
  2473.  
  2474.  move.l #TITLEPAL,a0
  2475.  move.l #TITLEPALCOP,a1
  2476.  
  2477. wvb:
  2478.  btst #5,$dff000+intreqrl
  2479.  beq.s wvb
  2480.  move.w #$20,$dff000+intreq 
  2481.  
  2482.  bsr PUTIN32
  2483.  add.w #4,a1
  2484.  bsr PUTIN32
  2485.  add.w #4,a1
  2486.  bsr PUTIN32
  2487.  add.w #4,a1
  2488.  bsr PUTIN32
  2489.  
  2490.  addq.w #8,d0
  2491.  dbra d1,fadeuploop
  2492.  
  2493.  subq #8,d0
  2494.  move.w d0,FADEVAL
  2495.  
  2496.  rts
  2497.  
  2498. CLEARTITLEPAL:
  2499.  PRSDP
  2500.  move.l #TITLEPALCOP,a0
  2501.  move.w #7,d1
  2502. clrpal:
  2503.  move.w #31,d0
  2504. clr32
  2505.  move.w #0,2(a0)
  2506.  addq #4,a0
  2507.  dbra d0,clr32
  2508.  addq #4,a0
  2509.  dbra d1,clrpal
  2510.  PRSDQ
  2511.  rts
  2512.  
  2513. FADEDOWNTITLE:
  2514.  
  2515.  move.w FADEVAL,d0
  2516.  move.w FADEAMOUNT,d1
  2517. fadedownloop:
  2518.  
  2519.  move.l #TITLEPAL,a0
  2520.  move.l #TITLEPALCOP,a1
  2521.  
  2522. .wvb:
  2523.  btst #5,$dff000+intreqrl
  2524.  beq.s .wvb
  2525.  move.w #$20,$dff000+intreq 
  2526.  
  2527.  bsr PUTIN32
  2528.  add.w #4,a1
  2529.  bsr PUTIN32
  2530.  add.w #4,a1
  2531.  bsr PUTIN32
  2532.  add.w #4,a1
  2533.  bsr PUTIN32
  2534.  
  2535.  subq.w #8,d0
  2536.  dbra d1,fadedownloop
  2537.  
  2538.  addq #8,d0
  2539.  move.w d0,FADEVAL
  2540.  
  2541.  rts
  2542.  
  2543. LOADTITLESCRN2:
  2544.  
  2545.  
  2546.  move.l #MEMF_CLEAR,d1
  2547.  move.l #52400,d0
  2548.  move.l 4.w,a6
  2549.  jsr    _LVOAllocMem(a6)
  2550.  tst.l  d0
  2551.  beq    .nomem
  2552.  
  2553.  move.l d0,tempptr
  2554.  
  2555.  move.l TITLESCRNPTR,d1
  2556.  move.l #1005,d2
  2557.  move.l doslib,a6
  2558.  jsr -30(a6)
  2559.  move.l d0,handle
  2560.  move.l d0,d1
  2561.  move.l doslib,a6
  2562. ; move.l TITLESCRNADDR,d2
  2563.  move.l tempptr,d2
  2564.  move.l #10240*7,d3
  2565.  jsr -42(a6)
  2566.  move.l doslib,a6
  2567.  move.l handle,d1
  2568.  jsr -36(a6)
  2569.  
  2570.     
  2571.  move.l TITLESCRNADDR,a0
  2572.  move.l tempptr,d0
  2573.  
  2574.  moveq #0,d1
  2575.  lea WorkSpace,a1
  2576.  lea $0,a2
  2577.  jsr unLHA
  2578.  
  2579.  move.l tempptr,a1
  2580.  move.l #52400,d0
  2581.  CALLEXEC FreeMem
  2582.   
  2583. .nomem
  2584.  
  2585.  rts
  2586.  
  2587. tempptr dc.l 0
  2588.  
  2589.  
  2590. GETTITLEMEM:
  2591.  move.l #2,d1
  2592.  move.l #10240*7,d0
  2593.  move.l 4.w,a6
  2594.  jsr -198(a6)
  2595.  move.l d0,TITLESCRNADDR
  2596.  
  2597.  move.l #$dff000-$2cdfe4,a4
  2598.  
  2599.  move.l #2,d1
  2600.  move.l #258*16*5,d0
  2601.  move.l 4.w,a6
  2602.  jsr -198(a6)
  2603.  move.l d0,OPTSPRADDR
  2604.  
  2605.  rts
  2606.  
  2607. ProtChkJLev1:
  2608.  
  2609. PROTSETUP:
  2610.  incbin "ab3:includes/protsetupenc"
  2611.  
  2612. ; Need to: Decode protection calling
  2613. ; routine
  2614. ; use null values to call it and erase
  2615. ; it from memory
  2616. ; erase this routine and return.
  2617.  
  2618. ; include "ab3:source/protsetup"
  2619.  
  2620.  
  2621. RELEASETITLEMEM:
  2622.  move.l TITLESCRNADDR,d1
  2623.  move.l d1,a1
  2624.  move.l #10240*7,d0
  2625.  move.l 4.w,a6
  2626.  jsr -210(a6)
  2627.  
  2628.  move.l OPTSPRADDR,d1
  2629.  move.l d1,a1
  2630.  move.l #258*80,d0
  2631.  move.l 4.w,a6
  2632.  jsr -210(a6)
  2633.  rts
  2634.  
  2635.  
  2636. PROTCALLENC:
  2637. ; incbin "ab3:source/protcallenc.bin
  2638.  
  2639. ; one pass, all instructions executed.
  2640. ; must call protection routine,store
  2641. ; value somewhere, call ask routine,
  2642. ; compare returned value, if correct
  2643. ; set up all values, then return.
  2644.  
  2645. ; include "ab3:source_4000/protcallenc"
  2646.  
  2647. ENDPROT:
  2648.  
  2649. LOADTITLESCRN:
  2650.  
  2651.  move.l #TITLESCRNNAME,d1
  2652.  move.l #1005,d2
  2653.  move.l doslib,a6
  2654.  jsr -30(a6)
  2655.  move.l d0,handle
  2656.  move.l d0,d1
  2657.  move.l doslib,a6
  2658.  move.l TITLESCRNADDR,d2
  2659.  move.l #10240*7,d3
  2660.  jsr -42(a6)
  2661.  move.l doslib,a6
  2662.  move.l handle,d1
  2663.  jsr -36(a6)
  2664.  
  2665.  rts
  2666.  
  2667. RVAL2: dc.w 0
  2668.  
  2669. SETUPTITLESCRN:
  2670.  
  2671.  PRSDR
  2672.  move.l #OPTCOP,a0
  2673.  move.l #rain,a1
  2674.  move.w #255,d0
  2675. putinrain:
  2676.  move.w (a1)+,d1
  2677.  move.w d1,6(a0)
  2678.  move.w d1,6+4(a0)
  2679.  move.w d1,6+8(a0)
  2680.  move.w d1,6+12(a0)
  2681.  add.w #4*14,a0
  2682.  
  2683.  dbra d0,putinrain
  2684.  
  2685. ; Put addr into copper.
  2686.  move.l OPTSPRADDR,d0
  2687.  move.w d0,tsp0l
  2688.  swap d0
  2689.  move.w d0,tsp0h
  2690.  swap d0
  2691.  add.l #258*16,d0
  2692.  move.w d0,tsp1l
  2693.  swap d0
  2694.  move.w d0,tsp1h
  2695.  swap d0
  2696.  add.l #258*16,d0
  2697.  move.w d0,tsp2l
  2698.  swap d0
  2699.  move.w d0,tsp2h
  2700.  swap d0
  2701.  add.l #258*16,d0
  2702.  move.w d0,tsp3l
  2703.  swap d0
  2704.  move.w d0,tsp3h
  2705.  swap d0
  2706.  add.l #258*16,d0
  2707.  move.w d0,tsp4l
  2708.  swap d0
  2709.  move.w d0,tsp4h
  2710.  
  2711.  move.l #nullspr,d0
  2712.  move.w d0,tsp5l
  2713.  move.w d0,tsp6l
  2714.  move.w d0,tsp7l
  2715.  swap d0
  2716.  move.w d0,tsp5h
  2717.  move.w d0,tsp6h
  2718.  move.w d0,tsp7h 
  2719.  
  2720.  move.l TITLESCRNADDR,d0
  2721.  move.w d0,ts1l
  2722.  swap d0
  2723.  move.w d0,ts1h
  2724.  swap d0
  2725.  add.l #10240,d0
  2726.  move.w d0,ts2l
  2727.  swap d0
  2728.  move.w d0,ts2h
  2729.  swap d0
  2730.  add.l #10240,d0
  2731.  move.w d0,ts3l
  2732.  swap d0
  2733.  move.w d0,ts3h
  2734.  swap d0
  2735.  add.l #10240,d0
  2736.  move.w d0,ts4l
  2737.  swap d0
  2738.  move.w d0,ts4h
  2739.  swap d0
  2740.  add.l #10240,d0
  2741.  move.w d0,ts5l
  2742.  swap d0
  2743.  move.w d0,ts5h
  2744.  swap d0
  2745.  add.l #10240,d0
  2746.  move.w d0,ts6l
  2747.  swap d0
  2748.  move.w d0,ts6h
  2749.  swap d0
  2750.  add.l #10240,d0
  2751.  move.w d0,ts7l
  2752.  swap d0
  2753.  move.w d0,ts7h
  2754.  rts 
  2755.  
  2756. RVAL1: dc.w 0
  2757.  
  2758. DummyAdds:
  2759.  dc.l dummy-78935450
  2760.  dc.l dummy-78935450
  2761.  dc.l dummy-78935450
  2762.  dc.l dummy-78935450
  2763.  dc.l dummy-78935450
  2764.  dc.l dummy-78935450
  2765.  dc.l dummy-78935450
  2766.  dc.l dummy-78935450
  2767.  dc.l dummy-78935450
  2768.  dc.l dummy-78935450
  2769.  
  2770. dummycall
  2771.  dc.w $4e75-123
  2772.  
  2773. protspace: 
  2774.  ;ds.l 200
  2775.  
  2776.  include "ab3:CHEESESAUCE/LEVEL_BLURB"
  2777.  
  2778. font:
  2779.  incbin "OptFont"
  2780.  
  2781. rain: incbin "optcop"
  2782.